'''deepseek练习'''


'''
题目：
给定两个集合：
python
managers = {"宋江", "吴用", "卢俊义", "燕青", "李逵", "武松"}
technicians = {"吴用", "时迁", "鲁智深", "林冲", "阮小七", "燕青", "刘唐"}
编写代码解决以下问题：
找出既是经理又是技术人员的人。
找出是经理但不是技术人员的人。
找出是技术人员但不是经理的人。
判断"林冲"是否是经理。
找出只担任一个职位的人（即只在经理或技术人员中出现一次的人）。
列出所有经理和技术人员的名字（去重）。
'''

# managers = {"宋江", "吴用", "卢俊义", "燕青", "李逵", "武松"}
# technicians = {"吴用", "时迁", "鲁智深", "林冲", "阮小七", "燕青", "刘唐"}
#
# print("找出既是经理又是技术人员的人:",managers&technicians)
# print("找出既是经理又是技术人员的人:",managers.intersection(technicians))
#
# print("找出是经理但不是技术人员的人:",managers-technicians)
# print("找出是经理但不是技术人员的人:",managers.difference(technicians))
#
# print("找出是技术人员但不是经理的人:",technicians-managers)
# print("找出是技术人员但不是经理的人:",technicians.difference(managers))
#
# print("判断 林冲 是否是经理:",'林冲' is managers)
# print("判断 林冲 是否是经理:",{'林冲'}<managers)
# print("判断 林冲 是否是经理:", {'林冲'}.issubset(managers))
#
# print("找出只担任一个职位的人（即只在经理或技术人员中出现一次的人）:",managers^technicians)
# print("找出只担任一个职位的人（即只在经理或技术人员中出现一次的人）:",managers.symmetric_difference(technicians))
#
# print("列出所有经理和技术人员的名字（去重）:",managers|technicians)
# print("列出所有经理和技术人员的名字（去重）:",managers.union(technicians))

'''
2. 固定集合（frozenset）
题目：
创建一个固定集合 fs = frozenset([1, 2, 3, 4])，尝试添加元素（观察报错）。
用固定集合作为字典的键，如 d = {fs: "这是一个固定集合"}，并验证是否可行。
'''

# fs = frozenset([1, 2, 3, 4])
# # fs.add(5)
# d = {fs: "这是一个固定集合"}
# print(d)

'''
3. 集合推导式
题目：
使用集合推导式生成 {1, 4, 9, 16, 25}（1~5 的平方）。
从列表 [1, 2, 2, 3, 4, 4, 5] 中去重，生成集合。
'''
# s = {x**2 for x in range(1,6)}
# print(s)
#
# l = [1, 2, 2, 3, 4, 4, 5]
# print(set(l))
# s2 = {x for x in l}
# print(s2)

'''
4. 函数定义与传参
题目：
定义一个函数 print_info(name, age)，打印 "姓名: {name}, 年龄: {age}"，分别用：
位置传参
关键字传参
序列传参（*args）
字典关键字传参（**kwargs）
模拟 range() 函数，实现 myrange(start, stop, step)，返回列表
'''

# def print_info(name, age):
#     print("姓名：",name)
#     print("年龄：",age)
#
# print_info("洛小阳",35)
# print_info(name="张破掳",age=40)
# print_info(*["吴听寒",30])
# print_info(**{"name":"凌绛","age":31})
#
# # 1,3
# def myrange(stop, start=0,  step=1):
#     L = []
#     if start!=0 and step == 1:
#         t=stop
#         stop = start
#         start = t
#         while start < stop:
#             L.append(start)
#             start+=step
#     elif start == 0 and step ==1:
#         while start < stop:
#             L.append(start)
#             start +=step
#     elif start!=0 and step !=1:
#         t = stop
#         stop = start
#         start = t
#         while start < stop:
#             L.append(start)
#             start+=step
#     return L
#
# print(myrange(1,5,2))


'''
5. 猴子吃桃问题
题目：
猴子每天吃掉一半桃子，并多吃一个。第 10 天时只剩 1 个桃子。问第一天有多少个桃子？
'''
# def eat_peach(n):
#     return (n+1)*2
#
# day = 10
# num_peach = 1
# while day >=1:
#     print("第%d天有%d的桃" % (day,num_peach))
#     num_peach = eat_peach(num_peach)
#     day -=1

'''
6. 完全数问题
题目：
完全数是指等于其所有真因子（不包括自身）之和的数，如 6 = 1 + 2 + 3。
编写函数 is_perfect(n)，判断 n 是否为完全数。
'''
# def id_perfect(n):
#     l = []
#     for x in range(1,n):
#         if n%x ==0:
#             l.append(x)
#     if sum(l) == n:
#         return True
#     else:
#         return False
#
# flag = id_perfect(7)
# if flag:
#     print("是完全数")
# else:
#     print("不是完全数")

'''
7. 高阶函数与递归
题目：
使用 map() 将列表 [1, 2, 3, 4] 中的每个元素平方。
使用递归计算斐波那契数列的第 n 项（fib(5) = 5）
'''

print(list(map(lambda x: x**2,[1,2,3,4])))

def fblq(n):
    if n <= 1:
        return n
    else:
        return fblq(n-1) +fblq(n-2)

print(fblq(5))



